#ifndef ENDOSCOPE_WINDOW_H
#define ENDOSCOPE_WINDOW_H

#include <QMainWindow>
#include <QWidget>
#include <QPushButton>
#include <QSlider>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>

#include <QCamera>
#include <QMediaCaptureSession>
#include <QVideoWidget>

#include <QImageCapture>
#include <QDateTime>
#include <QStandardPaths>

// 录像
#include <QMediaRecorder>
#include <QTimer>
#include <QMediaFormat>
#include <QMediaRecorder>

// 音频
#include <QAudioInput>
#include <QMediaDevices>
#include <QAudioDevice> 


class EndoscopeWindow : public QMainWindow
{
    Q_OBJECT

public:
    EndoscopeWindow(QWidget *parent = nullptr);
    ~EndoscopeWindow();

private:
    QWidget *centralWidget;
    QWidget *videoWidget;
    QSlider *brightnessSlider;

    // 右侧按钮
    QPushButton *autoButton;
    QPushButton *cameraButton;
    QPushButton *videoButton;
    QLabel *recordingIndicator;    // 添加这行：用于显示录制指示器
    
    QPushButton *freezeButton;
    QPushButton *saveButton;
    QPushButton *settingsButton;

    QCamera *camera;
    QMediaCaptureSession *captureSession;
    QVideoWidget *viewfinder;
    QImageCapture *imageCapture;  // 添加图像捕获对象

    QLabel *timeLabel;
    QLabel *batteryLabel;
    QTimer *timeUpdateTimer;

    // 录像
    QMediaRecorder *mediaRecorder;
    QTimer *recordingTimer;
    QString buttonStyle;  // 添加按钮样式成员变量
    bool isRecording;

    // 添加动画相关变量
    float pulseScale;
    bool pulseGrowing;

    // 添加美颜功能
    QPushButton *beautyButton;    // 美颜按钮
    QMenu *beautyMenu;           // 美颜菜单
    QAction *smoothAction;       // 磨皮选项
    QAction *whiteningAction;    // 美白选项
    
    bool isSmoothing;            // 是否开启磨皮
    bool isWhitening;            // 是否开启美白


    void setupUI();
    void createButtons(QVBoxLayout *rightLayout);
    // void createButtons();
    void initializeCamera();
    void handleCameraError(QCamera::Error error);

private slots:
    void captureImage();  // 添加拍照槽函数
    void imageSaved(int id, const QString &fileName);  // 添加图片保
    void updateDateTime();

    // 录像
    void toggleRecording();
    void updateRecordingIndicator();
    void handleRecordingError(QMediaRecorder::Error error);
    void handleRecordingFinished();

    // 美颜功能
    void toggleSmoothing();      // 切换磨皮效果
    void toggleWhitening();      // 切换美白效果
    void processFrame(QVideoFrame &frame);  // 处理视频帧

};

#endif
